import re

from _hellchin_webrun.src.core.browser.base import BaseTest
# from _hellchin_webrun.src.core.utils.logger.run_logger import TestLogger


class PageUtilsMixin(BaseTest):

    def replace_params(self, value: dict) -> dict:
        """
        替换参数中的变量
        :param value: 要进行替换的参数
        :return:
        """

        # 匹配变量的正则表达式
        pattern = re.compile(r'\${{(.+?)}}')
        data = str(value)

        # 只在确实有变量需要替换时记录日志
        if pattern.search(data):
            self.log.info("参数替换", f"原始参数: {value}")

        # 替换变量
        while pattern.search(data):
            # 获取要替换的内容
            old_value = pattern.search(data).group()
            # 提取变量成名
            key = pattern.search(data).group(1)
            # 获取变量的值
            # new_value = self.config.get('global_variable', {}).get(key)
            new_value = self.config.global_variable.get(key)

            if new_value:
                # 替换变量
                data = data.replace(old_value, new_value)
            else:
                # TestLogger.log_action("参数替换", f"未找到变量: {key}", "fail")
                # TestLogger.fail.suit_log("参数替换", f"未找到变量: {key}")
                self.log.error("参数替换", f"未找到变量: {key}")

        return eval(data)  # 返回替换后的结果
